package com.qust.agreement;

import com.qust.encryptionAndDecryption.IEnDecryption;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Set;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Message implements Serializable{
    protected int instruction; // 指令,加密,解密,验证token,传输算法实例等等
    protected int serialization; // 序列化方式,json,java序列化等
    protected Object context; // 内容


    /**
     * 内部类为自定义context,也可以根据自己的需要定义
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class EnDecryptionContext{
        /**
         * 加解密context
         */
        private int code; // 加解密算法编号
        private String context; // 加解密内容
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class AlgorithmTransmissionContext  implements Serializable{
        /**
         * 算法传输context
         */
        private int code; // 加解密算法编号
        private String classPath; // 序列化
        private String publicKey; // 公钥
        private String privateKey; // 私钥
        private byte[] jar; // jar包数据
        private boolean isCatchUp;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class AlgorithmicResourceCatchUpContext{
        private String address;
        private Set<Integer> missing;
    }

}
